#include <iostream>
#include <unordered_map>

using namespace std;



 struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) : val(x), next(nullptr) {}
 };

    ListNode* deleteDuplicates(ListNode* head) {
        if (!head || !head->next)
            return head;
        ListNode* cur = head;
        unordered_map<int, int> mmap;
        ListNode* per = nullptr;
        while (cur)
        {
            if (mmap[cur->val] != 0)
            {
                ListNode* next = cur->next;
                per->next = next;

            }
            else {
                mmap[cur->val]++;
            }
            per = cur;
            cur = cur->next;
        }
        return head;
    }


    int main()
{
    ListNode* Listnode1 = new ListNode(1);
    ListNode* Listnode2 = new ListNode(1);
    ListNode* Listnode3 = new ListNode(1);

    Listnode1->next = Listnode2;
    Listnode2->next = Listnode3;

    deleteDuplicates(Listnode1);
    return 0;
}
//

